package org.springblade.modules.admin.vo.sugar.bi;

import cn.hutool.core.date.DateUtil;
import lombok.Data;
import org.springblade.common.cache.DictCache;
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.admin.enums.ElevatorMaintainStatusEnums;

import java.io.Serializable;
import java.util.Date;

/**
 * @Date 8:52 2024/12/11
 * @Description {
 *   BI 电梯数据
 * }
 * @Author lsay
 **/
@Data
public class BIScreenElevatorVO implements Serializable {

	/**
	 * 电梯ID
	 */
	private Long elevatorId;

	/**
	 * 电梯运行状态
	 */
	private Integer elevatorIsStop;

	/**
	 * 电梯所属责任组名称
	 */
	private String elevatorPrincipalDeptNames;

	/**
	 * 电梯所属维保人员名称
	 */
	private String elevatorPrincipalUserNames;

	/**
	 * 电梯位置
	 */
	private String elevatorAddress;

	/**
	 * 电梯年检类型
	 */
	private String elevatorAuditTypeName;

	/**
	 * 电梯设备品种
	 */
	private String elevatorDriveModeName;

	/**
	 * 电梯品牌名称
	 */
	private String elevatorBrandName;

	/**
	 * 电梯启用时间
	 */
	private Date elevatorStartDate;

	/**
	 * 电梯年限标签
	 */
	private String elevatorAgeLimit;

	/**
	 * 电梯创建时间
	 */
	private Date elevatorCreateTime;

	/**
	 * 电梯更新时间
	 */
	private Date elevatorUpdateTime;

	/**
	 * 电梯在保状态 -1:无状态，1: 脱保，2: 在保（合同期内），3：在保（合同期外），4：在保（拟定保养）
	 */
	private Integer elevatorMaintainStatus;

	/**
	 * 电梯在保状态 -1:无状态，1: 脱保，2: 在保（合同期内），3：在保（合同期外），4：在保（拟定保养）
	 */
	private String elevatorMaintainStatusDesc;

	/**
	 * 电梯是否外包 合同来源 1:外包合同2:非外包合同
	 */
	private Integer elevatorFromType;

	/**
	 * 电梯是否外包 合同来源 1:外包合同2:非外包合同
	 */
	private String elevatorFromTypeDesc;

	/**
	 * 项目ID
	 */
	private Long buildingId;

	/**
	 * 项目名称
	 */
	private String buildingName;

	/**
	 * 项目类型Code
	 */
	private String buildingTypeCode;

	/**
	 * 项目类型名称
	 */
	private String buildingTypeName;

	/**
	 * 项目精度
	 */
	private String buildingLongitude;

	/**
	 * 项目纬度
	 */
	private String buildingLatitude;

	/**
	 * 项目定位地址
	 */
	private String buildingLocationAddress;

	/**
	 * 项目省
	 */
	private String buildingProvinceName;

	/**
	 * 项目市
	 */
	private String buildingCityName;

	/**
	 * 项目区
	 */
	private String buildingAdName;

	/**
	 * 项目是否驻点 1-不限，2-驻点
	 */
	private Integer buildingStagnationPoint;

	/**
	 * 项目是否驻点 1-不限，2-驻点
	 */
	private String buildingStagnationPointDesc;

	/**
	 * 项目维修到达时间 m分钟 h小时
	 */
	private String buildingMalfunctionWorkArrivalTime;

	public void setElevatorStartDate(Date elevatorStartDate) {
		this.elevatorStartDate = elevatorStartDate;
		if(Func.isNotEmpty(elevatorStartDate)){
			long betweenYear = DateUtil.betweenYear(elevatorStartDate,DateUtil.date(),Boolean.FALSE);
			if(betweenYear >= 0 && betweenYear < 2){
				this.elevatorAgeLimit = "0-2年";
			}else if(betweenYear >= 2 && betweenYear < 5){
				this.elevatorAgeLimit = "2-5年";
			}else if(betweenYear >= 5 && betweenYear < 10){
				this.elevatorAgeLimit = "5-10年";
			}
			else if(betweenYear >= 10 && betweenYear < 15){
				this.elevatorAgeLimit = "10-15年";
			}else if(betweenYear >= 15){
				this.elevatorAgeLimit = "15年以上";
			}
		}
	}

	public void setBuildingTypeCode(String buildingTypeCode) {
		this.buildingTypeCode = buildingTypeCode;
		if(Func.isNotEmpty(buildingTypeCode)){
			this.buildingTypeName = DictCache.getValue("building_type",buildingTypeCode);
		}
	}

	public void setElevatorMaintainStatus(Integer elevatorMaintainStatus) {
		this.elevatorMaintainStatus = elevatorMaintainStatus;
		if(Func.isNotEmpty(elevatorMaintainStatus)){
			this.elevatorMaintainStatusDesc = ElevatorMaintainStatusEnums.getName(elevatorMaintainStatus);
		}
	}

	public void setElevatorFromType(Integer elevatorFromType) {
		this.elevatorFromType = elevatorFromType;
		if(Func.isNotEmpty(elevatorFromType)){
			this.elevatorFromTypeDesc = elevatorFromType == 1 ? "外包合同" : "非外包合同";
		}
	}

	public void setBuildingStagnationPoint(Integer buildingStagnationPoint) {
		this.buildingStagnationPoint = buildingStagnationPoint;
		if(Func.isNotEmpty(buildingStagnationPoint)){
			this.buildingStagnationPointDesc = buildingStagnationPoint == 1 ? "不限" : "驻点";
		}
	}
}
